import http from '@/utils/http'

// 定义返回值类型
export type BannerItem={
  hrefUrl:string
  id:string
  imgUrl:string
  type:string
}


// 定义参数data的类型
type HomeBannerData={
  distributionSite:number
}


/**
 * 获取首页广告位列表
 * @param data.distributionSite 区分首页还是其他页的广告位 
 * @returns promise
 */
export function getHomeBanner(data:HomeBannerData){
  return http<BannerItem[]>({
    // 传入参数
  url:'/home/banner',
  method:'GET',
  data
  })
}

/**
 * 首页类目列表数据
 */
export interface CategoryItem {
    /**
     * 展示图标
     */
    icon: string;
    /**
     * id
     */
    id: string;
    /**
     * 分类名称
     */
    name: string;
}

/**
 * 获取首页类目列表数据
 * @returns promise
 */
export const getHomeCategory=()=>{
  return http<CategoryItem[]>({
    url:'/home/category/mutli',
    method:'GET'
  })
}



/**
 * 首页热门推荐数据
 */
export interface HotItem {
    /**
     * 推荐说明
     */
    alt: string;
    /**
     * id
     */
    id: string;
    /**
     * 图片集合
     */
    pictures: string[];
    /**
     * 跳转地址
     */
    target: string;
    /**
     * 推荐标题
     */
    title: string;
    /**
     * 推荐类型
     */
    type: string;
}

/**
 * 获取首页热门推荐数据
 * @returns promise
 */
export const getHomeHotMulti=()=>{
  return http<HotItem[]>({
    url:'/home/hot/mutli',
    method:'GET'
  })
}

// 定义新鲜好物参数类型
interface HomeData{
  limit:number
}

/**
 * 首页新鲜好物数据
 */
export interface HomeNewItem {
    /**
     * 备注
     */
    desc: string;
    /**
     * id
     */
    id: string;
    /**
     * 商品名称
     */
    name: string;
    /**
     * 商品图片链接
     */
    picture: string;
    /**
     * 价格
     */
    price: number;
}

/**
 * 获取新鲜好物数据
 * @param data.limit 默认值为 4，指定响应数据中商品的数量 
 * @returns promise
 */
export const getHomeNew=(data:HomeData)=>{
  return http<HomeNewItem[]>({
    url:'/home/new',
    method:'GET',
    data
  })
}

/**
 * 首页-猜你喜欢-请求参数
 */
interface HomeGoodsGuessLikeData {
  page?: number;
  pageSize?: number;
}

/**
 * 首页-猜你喜欢-返回数据
 */
export interface HomeGoodsGuessLikeResult {
  /**
   * 总条数
   */
  counts: number;
  /**
   * 当前页数据
   */
  items: GuessItem[];
  /**
   * 当前页数
   */
  page: number;
  /**
   * 总页数
   */
  pages: number;
  /**
   * 每页条数
   */
  pageSize: number;
}

export interface GuessItem {
  /**
   * 商品描述
   */
  desc: string;
  /**
   * 商品折扣
   */
  discount: number;
  /**
   * id
   */
  id: string;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 商品已下单数量
   */
  orderNum: number;
  /**
   * 商品图片
   */
  picture: string;
  /**
   * 商品价格
   */
  price: number;
}

/**
 * 获取猜你喜欢列表数据
 * @param data.page
 * @param data.pageSize
 * @returns promise
 */
export const getHomeGoodsGuessLike = (data: HomeGoodsGuessLikeData) => {
  return http<HomeGoodsGuessLikeResult>({
    url: "/home/goods/guessLike",
    method: "GET",
    data,
  });
};

/**
 * 推荐通用 请求参数
 */
interface RecommendData {
  /**
   * 说明：分页页码
   */
  page?: number;
  /**
   * 说明：分页数据每页条数
   */
  pageSize?: number;
  /**
   * 说明：Tab 项的 id，默认查询全部 Tab 项的第 1 页数据
   */
  subType?: string;
}
/**
 * 推荐通用 响应结果
 */
export interface RecommendResult {
  /**
   * 活动图片
   */
  bannerPicture: string;
  /**
   * id信息
   */
  id: string;
  /**
   * 子类选项集合
   */
  subTypes: SubTypeItem[];
  /**
   * 活动标题
   */
  title: string;
}

/**
 * 子类选项
 */
export interface SubTypeItem {
  goodsItems: GoodsItems;
  /**
   * 子类选项id
   */
  id: string;
  /**
   * 子类选项名称
   */
  title: string;
}

export interface GoodsItems {
  /**
   * 总数量
   */
  counts: string;
  /**
   * 商品集合
   */
  items: Item[];
  /**
   * 页码
   */
  page: string;
  /**
   * 总页数
   */
  pages: string;
  /**
   * 页容量
   */
  pageSize: string;
}

/**
 * 商品项
 */
export interface Item {
  /**
   * 商品描述
   */
  desc: string;
  /**
   * 商品id
   */
  id: string;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 商品图片
   */
  picture: string;
  /**
   * 商品价格
   */
  price: number;
}

// /**
//  * 特惠推荐
//  * @param data 推荐请求参数
//  */
// export const getHotPreference = (data: RecommendData) => {
//   return http<RecommendResult>({
//     url: "/hot/preference",
//     method: "GET",
//     data,
//   });
// };

// /**
//  * 爆款推荐
//  * @param data 推荐请求参数
//  */
// export const getHotInVogue = (data: RecommendData) => {
//   return http<RecommendResult>({
//     url: "/hot/inVogue",
//     method: "GET",
//     data,
//   });
// };

/**
 * 通用推荐
 * @param url  什么格式的推荐
 * @param data 推荐请求参数
 */
export function getHomeRecommend(url: string, data: RecommendData) {
  return http<RecommendResult>({
    url,
    method: 'GET',
    data
  })
}